package main

import (
	"fmt"
	"time"
)

func init() {
	println("这是init函数，在每一个main函数之前就会调用")
	println("这不会换行，这个args是什么")
}

//note : 全局变量 ，go函数会在init函数之前初始化全局变量 ,如果定义变量不进行初始化，就会进行默认，string 为空， number 为0
var Age int = 100 // 定义全局变量不能用 :=

func Sum(a int, b int) int {
	return a + b
}

// theme 常量
const (
	num0 = iota //0
	num2        //1
	num3        //2
	num4 = "ha" //独立值，iota += 1
	num5        //"ha"   iota += 1
	num6 = 100  //iota +=1
	num7        //100  iota +=1
	num8 = iota //7,恢复计数
	num9        //8
)

func main() {
	var (
		//theme 匿名变量,主要用语，函数返回值
		_ int = 10
		//nil 表示空 null
		arr [2]string //定义的字符串的数组，如果不给初始值，每一个值都是空，如果是int，就为0
		//product func(a int, b int) int
	)
	//sum := jisuan.Add(100, 300)
	//sub := jisuan.Sub(100, 200)
	//println(sum)
	//println(sub)
	//format output T type V value q  quote
	//fmt.Printf("%T,%v \n", sum, sum)
	fmt.Printf("%T,%v \n", arr, arr)
	print(Age)
	Age -= 10
	println(Age)
	println(Sum(10, 20))
	println(num0, num2, num3, num4, num5, num6, num7, num8, num9)
	for_if_time()
	var num12 int = 10
	num13 := 20 // 短定义不能有旧的变量,如果连续定义，就可以，但一定要有一个新变量
	pointer(&num12, &num13)
	//product(2,3)
	str1 := "sunck is a good man"
	str2 := "guge is a good chome"
	swap(str1, str2)
}

func for_if_time() {
	var i int
	for i < 4 {
		Time := time.Now().Unix()
		//println(second)
		if Time%num3 == 0 {
			println("female")
		} else {
			println("man")
		}
		i++
		time.Sleep(500 * time.Millisecond)
		//	NOTE millisecond 毫秒
	}
	// theme 指针
	var num10 int = 8
	var str1 string = "sunck is"
	t := &str1
	n := &num10
	println(num10, &num10, t, n, *t, *n)
}

func pointer(a *int, b *int) {
	println(a, b, &a, *b, &a, &b)
}

func swap(a string, b string) {
	println(a, b)
	a, b = b, a
	println(a, b)
}
